/**
 * 静态资源服务器主入口
 * @author xiaoqiang <465633678@qq.com>
 * @created 2018/11/01 16:45:10
 */
const Koa = require('koa')
const path = require('path')
const fs = require('fs')
const utils = require('./utils')
const app = new Koa()
app.use(async (ctx) => {
  // 静态资源目录
  const staticPath = './static'
  // 当前路径
  const currentPath = path.join(__dirname,  staticPath + ctx.path)
  /**
   * 判断是否有此文件或者目录
   */
  if (!fs.existsSync(currentPath)) {
    ctx.body = '404 not found'
    return
  }
  // 获取文件类型
  const type = utils.getType(ctx.url)
  // 判断是否是配置的文件类型
  if (type) {
    // 设置文件类型
    ctx.type = type
  }
  // 获取文件信息
  const stat = fs.statSync(currentPath)
  // 判断是否是文件夹
  if (stat.isDirectory()) {
    /**
     * 获取目录结构
     */
    const content = utils.getDir(currentPath, ctx.path)
    ctx.body = content
  } else {
    /**
     * 获取文件数据
     */
    const content = utils.getFile(currentPath)
    /**
     * 判断是否是图片类型
     */
    if (type.indexOf('image/')) {
      ctx.res.writeHead(200)
      ctx.res.write(content, 'binary')
      ctx.res.end()
    } else {
      ctx.body = content
    }
  }
  // 监听端口9999
}).listen(9999)

